package com.bruce.spring.http.service.cgroup;


import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class CgroupV1ProviderWithFiles extends CgroupV1BaseProvider {

    // 仅保存文件路径，不提前打开资源
    public CgroupV1ProviderWithFiles() throws IOException {
    }

    /**
     * 读取并返回CPU累计时间（纳秒）
     */
    public long getCurrentCpuTime() throws IOException {
        // 每次读取都重新打开文件并读取所有字节（无句柄复用）
        byte[] bytes = Files.readAllBytes(Paths.get(CPU_AcctUsagePath));

        if (bytes.length == 0) {
            throw new IOException("Failed to read cpuacct.usage: empty content");
        }

        // 解析字节数组为long（复用原parseLong逻辑）
        return parseLong(bytes);
    }

    // 手动解析字节数组（忽略换行符）
    private long parseLong(byte[] bytes) {
        long result = 0;
        for (byte b : bytes) {
            if (b == '\n' || b == '\r') {
                continue;
            }
            result = result * 10 + (b - '0');
        }
        return result;
    }

    // 无需关闭资源（每次读取后自动释放）
    public void close() throws IOException {
        // 无资源需要手动关闭
    }
}
